#if !defined(FAKE_D3D10_DEVICE_H)
#define FAKE_D3D10_DEVICE_H

#include <d3d10.h>
#include "Fakes/FakeUnknown.h"
#include <rt/Exceptions/NotImplementedException.h>

class FakeD3D10Device : public ID3D10Device
{
public:
	FakeD3D10Device()
		: Unknown(),
		CreateBlendStateCalled(false), CreateBlendStateLastDesc(0), CreateBlendStateFakeResult(0), CreateBlendStateFakeHResult(E_FAIL),
		CreateRasterizerStateCalled(false), CreateRasterizerStateLastDesc(0), CreateRasterizerStateFakeResult(0), CreateRasterizerStateFakeHResult(E_FAIL),
		CreateDepthStencilStateCalled(false), CreateDepthStencilStateLastDesc(0), CreateDepthStencilStateFakeResult(0), CreateDepthStencilStateFakeHResult(E_FAIL),
		CreateQueryCalled(false), CreateQueryLastDesc(0), CreateQueryFakeResult(0), CreateQueryFakeHResult(E_FAIL),
		CreateCounterCalled(false), CreateCounterLastDesc(0), CreateCounterFakeResult(0), CreateCounterFakeHResult(E_FAIL),
		CreateDepthStencilViewCalled(false), CreateDepthStencilViewLastResource(0), CreateDepthStencilViewLastDesc(0), CreateDepthStencilViewFakeResult(0), CreateDepthStencilViewFakeHResult(E_FAIL),
		CreatePredicateCalled(false), CreatePredicateLastDesc(0), CreatePredicateFakeResult(0), CreatePredicateFakeHResult(E_FAIL),
		CreateRenderTargetViewCalled(false), CreateRenderTargetViewLastResource(0), CreateRenderTargetViewLastDesc(0), CreateRenderTargetViewFakeResult(0), CreateRenderTargetViewFakeHResult(E_FAIL),
		CreateSamplerStateCalled(false), CreateSamplerStateLastDesc(0), CreateSamplerStateFakeResult(0), CreateSamplerStateFakeHResult(E_FAIL),
		CreateShaderResourceViewCalled(false), CreateShaderResourceViewLastResource(0), CreateShaderResourceViewLastDesc(0), CreateShaderResourceViewFakeResult(0), CreateShaderResourceViewFakeHResult(E_FAIL),
		CreateBufferCalled(false), CreateBufferLastData(0), CreateBufferLastDesc(0), CreateBufferFakeResult(0), CreateBufferFakeHResult(E_FAIL),
		CreateTexture1DCalled(false), CreateTexture1DLastData(0), CreateTexture1DLastDesc(0), CreateTexture1DFakeResult(0), CreateTexture1DFakeHResult(E_FAIL),
		CreateTexture2DCalled(false), CreateTexture2DLastData(0), CreateTexture2DLastDesc(0), CreateTexture2DFakeResult(0), CreateTexture2DFakeHResult(E_FAIL),
		CreateTexture3DCalled(false), CreateTexture3DLastData(0), CreateTexture3DLastDesc(0), CreateTexture3DFakeResult(0), CreateTexture3DFakeHResult(E_FAIL)
	{
	}
	bool CreateBlendStateCalled;
	D3D10_BLEND_DESC const *CreateBlendStateLastDesc;
	ID3D10BlendState *CreateBlendStateFakeResult;
	HRESULT CreateBlendStateFakeHResult;
	bool CreateRasterizerStateCalled;
	D3D10_RASTERIZER_DESC const *CreateRasterizerStateLastDesc;
	ID3D10RasterizerState *CreateRasterizerStateFakeResult;
	HRESULT CreateRasterizerStateFakeHResult;
	bool CreateDepthStencilStateCalled;
	D3D10_DEPTH_STENCIL_DESC const *CreateDepthStencilStateLastDesc;
	ID3D10DepthStencilState *CreateDepthStencilStateFakeResult;
	HRESULT CreateDepthStencilStateFakeHResult;
	bool CreateQueryCalled;
	D3D10_QUERY_DESC const *CreateQueryLastDesc;
	ID3D10Query *CreateQueryFakeResult;
	HRESULT CreateQueryFakeHResult;
	bool CreateCounterCalled;
	D3D10_COUNTER_DESC const *CreateCounterLastDesc;
	ID3D10Counter *CreateCounterFakeResult;
	HRESULT CreateCounterFakeHResult;
	bool CreateDepthStencilViewCalled;
	ID3D10Resource *CreateDepthStencilViewLastResource;
	D3D10_DEPTH_STENCIL_VIEW_DESC const *CreateDepthStencilViewLastDesc;
	ID3D10DepthStencilView *CreateDepthStencilViewFakeResult;
	HRESULT CreateDepthStencilViewFakeHResult;
	bool CreatePredicateCalled;
	D3D10_QUERY_DESC const *CreatePredicateLastDesc;
	ID3D10Predicate *CreatePredicateFakeResult;
	HRESULT CreatePredicateFakeHResult;
	bool CreateRenderTargetViewCalled;
	ID3D10Resource *CreateRenderTargetViewLastResource;
	D3D10_RENDER_TARGET_VIEW_DESC const *CreateRenderTargetViewLastDesc;
	ID3D10RenderTargetView *CreateRenderTargetViewFakeResult;
	HRESULT CreateRenderTargetViewFakeHResult;
	bool CreateSamplerStateCalled;
	D3D10_SAMPLER_DESC const *CreateSamplerStateLastDesc;
	ID3D10SamplerState *CreateSamplerStateFakeResult;
	HRESULT CreateSamplerStateFakeHResult;
	bool CreateShaderResourceViewCalled;
	ID3D10Resource *CreateShaderResourceViewLastResource;
	D3D10_SHADER_RESOURCE_VIEW_DESC const *CreateShaderResourceViewLastDesc;
	ID3D10ShaderResourceView *CreateShaderResourceViewFakeResult;
	HRESULT CreateShaderResourceViewFakeHResult;
	bool CreateBufferCalled;
	D3D10_BUFFER_DESC const *CreateBufferLastDesc;
	D3D10_SUBRESOURCE_DATA const *CreateBufferLastData;
	ID3D10Buffer *CreateBufferFakeResult;
	HRESULT CreateBufferFakeHResult;
	bool CreateTexture1DCalled;
	D3D10_TEXTURE1D_DESC const *CreateTexture1DLastDesc;
	D3D10_SUBRESOURCE_DATA const *CreateTexture1DLastData;
	ID3D10Texture1D *CreateTexture1DFakeResult;
	HRESULT CreateTexture1DFakeHResult;
	bool CreateTexture2DCalled;
	D3D10_TEXTURE2D_DESC const *CreateTexture2DLastDesc;
	D3D10_SUBRESOURCE_DATA const *CreateTexture2DLastData;
	ID3D10Texture2D *CreateTexture2DFakeResult;
	HRESULT CreateTexture2DFakeHResult;
	bool CreateTexture3DCalled;
	D3D10_TEXTURE3D_DESC const *CreateTexture3DLastDesc;
	D3D10_SUBRESOURCE_DATA const *CreateTexture3DLastData;
	ID3D10Texture3D *CreateTexture3DFakeResult;
	HRESULT CreateTexture3DFakeHResult;

	CONTAIN_UNKNOWN(Unknown);

	// ID3D10Device
	virtual HRESULT STDMETHODCALLTYPE CreateBuffer(const D3D10_BUFFER_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Buffer **ppBuffer)
	{
		CreateBufferCalled = true;
		CreateBufferLastDesc = pDesc;
		CreateBufferLastData = pInitialData;
		*ppBuffer = CreateBufferFakeResult;
		return CreateBufferFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(const D3D10_TEXTURE1D_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Texture1D **ppTexture1D)
	{
		CreateTexture1DCalled = true;
		CreateTexture1DLastDesc = pDesc;
		CreateTexture1DLastData = pInitialData;
		*ppTexture1D = CreateTexture1DFakeResult;
		return CreateTexture1DFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(const D3D10_TEXTURE2D_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Texture2D **ppTexture2D)
	{
		CreateTexture2DCalled = true;
		CreateTexture2DLastDesc = pDesc;
		CreateTexture2DLastData = pInitialData;
		*ppTexture2D = CreateTexture2DFakeResult;
		return CreateTexture2DFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(const D3D10_TEXTURE3D_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Texture3D **ppTexture3D)
	{
		CreateTexture3DCalled = true;
		CreateTexture3DLastDesc = pDesc;
		CreateTexture3DLastData = pInitialData;
		*ppTexture3D = CreateTexture3DFakeResult;
		return CreateTexture3DFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(ID3D10Resource *pResource, const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc, ID3D10ShaderResourceView **ppSRView)
	{
		CreateShaderResourceViewCalled = true;
		CreateShaderResourceViewLastResource = pResource;
		CreateShaderResourceViewLastDesc = pDesc;
		*ppSRView = CreateShaderResourceViewFakeResult;
		return CreateShaderResourceViewFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(ID3D10Resource *pResource, const D3D10_RENDER_TARGET_VIEW_DESC *pDesc, ID3D10RenderTargetView **ppRTView)
	{
		CreateRenderTargetViewCalled = true;
		CreateRenderTargetViewLastResource = pResource;
		CreateRenderTargetViewLastDesc = pDesc;
		*ppRTView = CreateRenderTargetViewFakeResult;
		return CreateRenderTargetViewFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(ID3D10Resource *pResource, const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc, ID3D10DepthStencilView **ppDepthStencilView)
	{
		CreateDepthStencilViewCalled = true;
		CreateDepthStencilViewLastResource = pResource;
		CreateDepthStencilViewLastDesc = pDesc;
		*ppDepthStencilView = CreateDepthStencilViewFakeResult;
		return CreateDepthStencilViewFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs, UINT NumElements, const void *pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D10InputLayout **ppInputLayout) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10VertexShader **ppVertexShader) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10GeometryShader **ppGeometryShader) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10PixelShader **ppPixelShader) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CreateBlendState(const D3D10_BLEND_DESC *pBlendStateDesc, ID3D10BlendState **ppBlendState)
	{
		CreateBlendStateCalled = true;
		CreateBlendStateLastDesc = pBlendStateDesc;
		*ppBlendState = CreateBlendStateFakeResult;
		return CreateBlendStateFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc, ID3D10DepthStencilState **ppDepthStencilState)
	{
		CreateDepthStencilStateCalled = true;
		CreateDepthStencilStateLastDesc = pDepthStencilDesc;
		*ppDepthStencilState = CreateDepthStencilStateFakeResult;
		return CreateDepthStencilStateFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(const D3D10_RASTERIZER_DESC *pRasterizerDesc, ID3D10RasterizerState **ppRasterizerState)
	{
		CreateRasterizerStateCalled = true;
		CreateRasterizerStateLastDesc = pRasterizerDesc;
		*ppRasterizerState = CreateRasterizerStateFakeResult;
		return CreateRasterizerStateFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(const D3D10_SAMPLER_DESC *pSamplerDesc, ID3D10SamplerState **ppSamplerState)
	{
		CreateSamplerStateCalled = true;
		CreateSamplerStateLastDesc = pSamplerDesc;
		*ppSamplerState = CreateSamplerStateFakeResult;
		return CreateSamplerStateFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateQuery(const D3D10_QUERY_DESC *pQueryDesc, ID3D10Query **ppQuery)
	{
		CreateQueryCalled = true;
		CreateQueryLastDesc = pQueryDesc;
		*ppQuery = CreateQueryFakeResult;
		return CreateQueryFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreatePredicate(const D3D10_QUERY_DESC *pPredicateDesc, ID3D10Predicate **ppPredicate)
	{
		CreatePredicateCalled = true;
		CreatePredicateLastDesc = pPredicateDesc;
		*ppPredicate = CreatePredicateFakeResult;
		return CreatePredicateFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE CreateCounter(const D3D10_COUNTER_DESC *pCounterDesc, ID3D10Counter **ppCounter)
	{
		CreateCounterCalled = true;
		CreateCounterLastDesc = pCounterDesc;
		*ppCounter = CreateCounterFakeResult;
		return CreateCounterFakeHResult;
	}
	virtual HRESULT STDMETHODCALLTYPE OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void **ppResource) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(DXGI_FORMAT Format, UINT *pFormatSupport) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT *pNumQualityLevels) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE CheckCounterInfo(D3D10_COUNTER_INFO *pCounterInfo) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CheckCounter(const D3D10_COUNTER_DESC *pDesc, D3D10_COUNTER_TYPE *pType, UINT *pActiveCounters, LPSTR szName, UINT *pNameLength, LPSTR szUnits, UINT *pUnitsLength, LPSTR szDescription, UINT *pDescriptionLength) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID guid, UINT DataSize, const void *pData) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID guid, const IUnknown *pData) { throw rt::NotImplementedException(); }
	virtual UINT STDMETHODCALLTYPE GetCreationFlags() { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason() { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(UINT RaiseFlags) { throw rt::NotImplementedException(); }
	virtual UINT STDMETHODCALLTYPE GetExceptionMode() { throw rt::NotImplementedException(); }

	virtual void STDMETHODCALLTYPE VSSetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppConstantBuffers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSSetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView *const *ppShaderResourceViews) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSSetShader(ID3D10PixelShader *pPixelShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSSetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState *const *ppSamplers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSSetShader(ID3D10VertexShader *pVertexShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE DrawIndexed(UINT IndexCount,UINT StartIndexLocation,INT BaseVertexLocation) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE Draw(UINT VertexCount,UINT StartVertexLocation) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSSetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppConstantBuffers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IASetInputLayout(ID3D10InputLayout *pInputLayout) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IASetVertexBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppVertexBuffers,const UINT *pStrides,const UINT *pOffsets) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IASetIndexBuffer(ID3D10Buffer *pIndexBuffer,DXGI_FORMAT Format,UINT Offset) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE DrawIndexedInstanced(UINT IndexCountPerInstance,UINT InstanceCount,UINT StartIndexLocation,INT BaseVertexLocation,UINT StartInstanceLocation) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE DrawInstanced(UINT VertexCountPerInstance,UINT InstanceCount,UINT StartVertexLocation,UINT StartInstanceLocation) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSSetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppConstantBuffers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSSetShader(ID3D10GeometryShader *pShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY Topology) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSSetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView *const *ppShaderResourceViews) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSSetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState *const *ppSamplers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE SetPredication(ID3D10Predicate *pPredicate,BOOL PredicateValue) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSSetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView *const *ppShaderResourceViews) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSSetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState *const *ppSamplers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE OMSetRenderTargets(UINT NumViews,ID3D10RenderTargetView *const *ppRenderTargetViews,ID3D10DepthStencilView *pDepthStencilView) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE OMSetBlendState(ID3D10BlendState *pBlendState,const FLOAT BlendFactor[ 4 ],UINT SampleMask) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE OMSetDepthStencilState(ID3D10DepthStencilState *pDepthStencilState,UINT StencilRef) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE SOSetTargets(UINT NumBuffers,ID3D10Buffer *const *ppSOTargets,const UINT *pOffsets) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE DrawAuto( void) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE RSSetState(ID3D10RasterizerState *pRasterizerState) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE RSSetViewports(UINT NumViewports,const D3D10_VIEWPORT *pViewports) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE RSSetScissorRects(UINT NumRects,const D3D10_RECT *pRects) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE CopySubresourceRegion(ID3D10Resource *pDstResource,UINT DstSubresource,UINT DstX,UINT DstY,UINT DstZ,ID3D10Resource *pSrcResource,UINT SrcSubresource,const D3D10_BOX *pSrcBox) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE CopyResource(ID3D10Resource *pDstResource,ID3D10Resource *pSrcResource) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE UpdateSubresource(ID3D10Resource *pDstResource,UINT DstSubresource,const D3D10_BOX *pDstBox,const void *pSrcData,UINT SrcRowPitch,UINT SrcDepthPitch) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE ClearRenderTargetView(ID3D10RenderTargetView *pRenderTargetView,const FLOAT ColorRGBA[ 4 ]) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE ClearDepthStencilView(ID3D10DepthStencilView *pDepthStencilView,UINT ClearFlags,FLOAT Depth,UINT8 Stencil) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GenerateMips(ID3D10ShaderResourceView *pShaderResourceView) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE ResolveSubresource(ID3D10Resource *pDstResource,UINT DstSubresource,ID3D10Resource *pSrcResource,UINT SrcSubresource,DXGI_FORMAT Format) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSGetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppConstantBuffers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSGetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView **ppShaderResourceViews) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSGetShader(ID3D10PixelShader **ppPixelShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSGetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState **ppSamplers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSGetShader(ID3D10VertexShader **ppVertexShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE PSGetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppConstantBuffers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IAGetInputLayout(ID3D10InputLayout **ppInputLayout) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IAGetVertexBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppVertexBuffers,UINT *pStrides,UINT *pOffsets) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IAGetIndexBuffer(ID3D10Buffer **pIndexBuffer,DXGI_FORMAT *Format,UINT *Offset) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSGetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppConstantBuffers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSGetShader(ID3D10GeometryShader **ppGeometryShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE IAGetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY *pTopology) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSGetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView **ppShaderResourceViews) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE VSGetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState **ppSamplers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GetPredication(ID3D10Predicate **ppPredicate,BOOL *pPredicateValue) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSGetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView **ppShaderResourceViews) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GSGetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState **ppSamplers) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE OMGetRenderTargets(UINT NumViews,ID3D10RenderTargetView **ppRenderTargetViews,ID3D10DepthStencilView **ppDepthStencilView) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE OMGetBlendState(ID3D10BlendState **ppBlendState,FLOAT BlendFactor[ 4 ],UINT *pSampleMask) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE OMGetDepthStencilState(ID3D10DepthStencilState **ppDepthStencilState,UINT *pStencilRef) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE SOGetTargets(UINT NumBuffers,ID3D10Buffer **ppSOTargets,UINT *pOffsets) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE RSGetState(ID3D10RasterizerState **ppRasterizerState) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE RSGetViewports(UINT *NumViewports,D3D10_VIEWPORT *pViewports) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE RSGetScissorRects(UINT *NumRects,D3D10_RECT *pRects) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE ClearState( void) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE Flush( void) { throw rt::NotImplementedException(); }
	virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(const void *pShaderBytecode,SIZE_T BytecodeLength,const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,UINT NumEntries,UINT OutputStreamStride,ID3D10GeometryShader **ppGeometryShader) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE SetTextFilterSize(UINT Width,UINT Height) { throw rt::NotImplementedException(); }
	virtual void STDMETHODCALLTYPE GetTextFilterSize(UINT *pWidth,UINT *pHeight) { throw rt::NotImplementedException(); }
};

#define CONTAIN_DEVICE(member_) \
	CONTAIN_UNKNOWN(Unknown); \
	FakeD3D10Device member_; \
	virtual HRESULT STDMETHODCALLTYPE CreateBuffer(const D3D10_BUFFER_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Buffer **ppBuffer) { return member_.CreateBuffer(pDesc, pInitialData, ppBuffer); } \
	virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(const D3D10_TEXTURE1D_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Texture1D **ppTexture1D) { return member_.CreateTexture1D(pDesc, pInitialData, ppTexture1D); } \
	virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(const D3D10_TEXTURE2D_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Texture2D **ppTexture2D) { return member_.CreateTexture2D(pDesc, pInitialData, ppTexture2D); } \
	virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(const D3D10_TEXTURE3D_DESC *pDesc, const D3D10_SUBRESOURCE_DATA *pInitialData, ID3D10Texture3D **ppTexture3D) { return member_.CreateTexture3D(pDesc, pInitialData, ppTexture3D); } \
	virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(ID3D10Resource *pResource, const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc, ID3D10ShaderResourceView **ppSRView) { return member_.CreateShaderResourceView(pResource, pDesc, ppSRView); } \
	virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(ID3D10Resource *pResource, const D3D10_RENDER_TARGET_VIEW_DESC *pDesc, ID3D10RenderTargetView **ppRTView) { return member_.CreateRenderTargetView(pResource, pDesc, ppRTView); } \
	virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(ID3D10Resource *pResource, const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc, ID3D10DepthStencilView **ppDepthStencilView) { return member_.CreateDepthStencilView(pResource, pDesc, ppDepthStencilView); } \
	virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs, UINT NumElements, const void *pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D10InputLayout **ppInputLayout) { return member_.CreateInputLayout(pInputElementDescs, NumElements, pShaderBytecodeWithInputSignature, BytecodeLength, ppInputLayout); } \
	virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10VertexShader **ppVertexShader) { return member_.CreateVertexShader(pShaderBytecode, BytecodeLength, ppVertexShader); } \
	virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10GeometryShader **ppGeometryShader) { return member_.CreateGeometryShader(pShaderBytecode, BytecodeLength, ppGeometryShader); } \
	virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10PixelShader **ppPixelShader) { return member_.CreatePixelShader(pShaderBytecode, BytecodeLength, ppPixelShader); } \
	virtual HRESULT STDMETHODCALLTYPE CreateBlendState(const D3D10_BLEND_DESC *pBlendStateDesc, ID3D10BlendState **ppBlendState) { return member_.CreateBlendState(pBlendStateDesc, ppBlendState); } \
	virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc, ID3D10DepthStencilState **ppDepthStencilState) { return member_.CreateDepthStencilState(pDepthStencilDesc, ppDepthStencilState); } \
	virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(const D3D10_RASTERIZER_DESC *pRasterizerDesc, ID3D10RasterizerState **ppRasterizerState) { return member_.CreateRasterizerState(pRasterizerDesc, ppRasterizerState); } \
	virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(const D3D10_SAMPLER_DESC *pSamplerDesc, ID3D10SamplerState **ppSamplerState) { return member_.CreateSamplerState(pSamplerDesc, ppSamplerState); } \
	virtual HRESULT STDMETHODCALLTYPE CreateQuery(const D3D10_QUERY_DESC *pQueryDesc, ID3D10Query **ppQuery) { return member_.CreateQuery(pQueryDesc, ppQuery); } \
	virtual HRESULT STDMETHODCALLTYPE CreatePredicate(const D3D10_QUERY_DESC *pPredicateDesc, ID3D10Predicate **ppPredicate) { return member_.CreatePredicate(pPredicateDesc, ppPredicate); } \
	virtual HRESULT STDMETHODCALLTYPE CreateCounter(const D3D10_COUNTER_DESC *pCounterDesc, ID3D10Counter **ppCounter) { return member_.CreateCounter(pCounterDesc, ppCounter); } \
	virtual HRESULT STDMETHODCALLTYPE OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void **ppResource) { return member_.OpenSharedResource(hResource, ReturnedInterface, ppResource); } \
	virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(DXGI_FORMAT Format, UINT *pFormatSupport) { return member_.CheckFormatSupport(Format, pFormatSupport); } \
	virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT *pNumQualityLevels) { return member_.CheckMultisampleQualityLevels(Format, SampleCount, pNumQualityLevels); } \
	virtual void STDMETHODCALLTYPE CheckCounterInfo(D3D10_COUNTER_INFO *pCounterInfo) { member_.CheckCounterInfo(pCounterInfo); } \
	virtual HRESULT STDMETHODCALLTYPE CheckCounter(const D3D10_COUNTER_DESC *pDesc, D3D10_COUNTER_TYPE *pType, UINT *pActiveCounters, LPSTR szName, UINT *pNameLength, LPSTR szUnits, UINT *pUnitsLength, LPSTR szDescription, UINT *pDescriptionLength) { return member_.CheckCounter(pDesc, pType, pActiveCounters, szName, pNameLength, szUnits, pUnitsLength, szDescription, pDescriptionLength); } \
	virtual HRESULT STDMETHODCALLTYPE GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData) { return member_.GetPrivateData(guid, pDataSize, pData); } \
	virtual HRESULT STDMETHODCALLTYPE SetPrivateData(REFGUID guid, UINT DataSize, const void *pData) { return member_.SetPrivateData(guid, DataSize, pData); } \
	virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(REFGUID guid, const IUnknown *pData) { return member_.SetPrivateDataInterface(guid, pData); } \
	virtual UINT STDMETHODCALLTYPE GetCreationFlags() { return member_.GetCreationFlags(); } \
	virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason() { return member_.GetDeviceRemovedReason(); } \
	virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(UINT RaiseFlags) { return member_.SetExceptionMode(RaiseFlags); } \
	virtual UINT STDMETHODCALLTYPE GetExceptionMode() { return member_.GetExceptionMode(); } \
	virtual void STDMETHODCALLTYPE VSSetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppConstantBuffers) { member_.VSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); } \
	virtual void STDMETHODCALLTYPE PSSetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView *const *ppShaderResourceViews) { member_.PSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); } \
	virtual void STDMETHODCALLTYPE PSSetShader(ID3D10PixelShader *pPixelShader) { member_.PSSetShader(pPixelShader); } \
	virtual void STDMETHODCALLTYPE PSSetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState *const *ppSamplers) { member_.PSSetSamplers(StartSlot, NumSamplers, ppSamplers); } \
	virtual void STDMETHODCALLTYPE VSSetShader(ID3D10VertexShader *pVertexShader) { member_.VSSetShader(pVertexShader); } \
	virtual void STDMETHODCALLTYPE DrawIndexed(UINT IndexCount,UINT StartIndexLocation,INT BaseVertexLocation) { member_.DrawIndexed(IndexCount, StartIndexLocation, BaseVertexLocation); } \
	virtual void STDMETHODCALLTYPE Draw(UINT VertexCount,UINT StartVertexLocation) { member_.Draw(VertexCount, StartVertexLocation); } \
	virtual void STDMETHODCALLTYPE PSSetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppConstantBuffers) { member_.PSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); } \
	virtual void STDMETHODCALLTYPE IASetInputLayout(ID3D10InputLayout *pInputLayout) { member_.IASetInputLayout(pInputLayout); } \
	virtual void STDMETHODCALLTYPE IASetVertexBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppVertexBuffers,const UINT *pStrides,const UINT *pOffsets) { member_.IASetVertexBuffers(StartSlot, NumBuffers, ppVertexBuffers, pStrides, pOffsets); } \
	virtual void STDMETHODCALLTYPE IASetIndexBuffer(ID3D10Buffer *pIndexBuffer,DXGI_FORMAT Format,UINT Offset) { member_.IASetIndexBuffer(pIndexBuffer, Format, Offset); } \
	virtual void STDMETHODCALLTYPE DrawIndexedInstanced(UINT IndexCountPerInstance,UINT InstanceCount,UINT StartIndexLocation,INT BaseVertexLocation,UINT StartInstanceLocation) { member_.DrawIndexedInstanced(IndexCountPerInstance, InstanceCount, StartIndexLocation, BaseVertexLocation, StartInstanceLocation); } \
	virtual void STDMETHODCALLTYPE DrawInstanced(UINT VertexCountPerInstance,UINT InstanceCount,UINT StartVertexLocation,UINT StartInstanceLocation) { member_.DrawInstanced(VertexCountPerInstance, InstanceCount, StartVertexLocation, StartInstanceLocation); } \
	virtual void STDMETHODCALLTYPE GSSetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer *const *ppConstantBuffers) { member_.GSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); } \
	virtual void STDMETHODCALLTYPE GSSetShader(ID3D10GeometryShader *pShader) { member_.GSSetShader(pShader); } \
	virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY Topology) { member_.IASetPrimitiveTopology(Topology); } \
	virtual void STDMETHODCALLTYPE VSSetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView *const *ppShaderResourceViews) { member_.VSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); } \
	virtual void STDMETHODCALLTYPE VSSetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState *const *ppSamplers) { member_.VSSetSamplers(StartSlot, NumSamplers, ppSamplers); } \
	virtual void STDMETHODCALLTYPE SetPredication(ID3D10Predicate *pPredicate,BOOL PredicateValue) { member_.SetPredication(pPredicate, PredicateValue); } \
	virtual void STDMETHODCALLTYPE GSSetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView *const *ppShaderResourceViews) { member_.GSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews); } \
	virtual void STDMETHODCALLTYPE GSSetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState *const *ppSamplers) { member_.GSSetSamplers(StartSlot, NumSamplers, ppSamplers); } \
	virtual void STDMETHODCALLTYPE OMSetRenderTargets(UINT NumViews,ID3D10RenderTargetView *const *ppRenderTargetViews,ID3D10DepthStencilView *pDepthStencilView) { member_.OMSetRenderTargets(NumViews, ppRenderTargetViews, pDepthStencilView); } \
	virtual void STDMETHODCALLTYPE OMSetBlendState(ID3D10BlendState *pBlendState,const FLOAT BlendFactor[ 4 ],UINT SampleMask) { member_.OMSetBlendState(pBlendState, BlendFactor, SampleMask); } \
	virtual void STDMETHODCALLTYPE OMSetDepthStencilState(ID3D10DepthStencilState *pDepthStencilState,UINT StencilRef) { member_.OMSetDepthStencilState(pDepthStencilState, StencilRef); } \
	virtual void STDMETHODCALLTYPE SOSetTargets(UINT NumBuffers,ID3D10Buffer *const *ppSOTargets,const UINT *pOffsets) { member_.SOSetTargets(NumBuffers, ppSOTargets, pOffsets); } \
	virtual void STDMETHODCALLTYPE DrawAuto( void) { member_.DrawAuto(); } \
	virtual void STDMETHODCALLTYPE RSSetState(ID3D10RasterizerState *pRasterizerState) { member_.RSSetState(pRasterizerState); } \
	virtual void STDMETHODCALLTYPE RSSetViewports(UINT NumViewports,const D3D10_VIEWPORT *pViewports) { member_.RSSetViewports(NumViewports, pViewports); } \
	virtual void STDMETHODCALLTYPE RSSetScissorRects(UINT NumRects,const D3D10_RECT *pRects) { member_.RSSetScissorRects(NumRects, pRects); } \
	virtual void STDMETHODCALLTYPE CopySubresourceRegion(ID3D10Resource *pDstResource,UINT DstSubresource,UINT DstX,UINT DstY,UINT DstZ,ID3D10Resource *pSrcResource,UINT SrcSubresource,const D3D10_BOX *pSrcBox) { member_.CopySubresourceRegion(pDstResource, DstSubresource, DstX, DstY, DstZ, pSrcResource, SrcSubresource, pSrcBox); } \
	virtual void STDMETHODCALLTYPE CopyResource(ID3D10Resource *pDstResource,ID3D10Resource *pSrcResource) { member_.CopyResource(pDstResource, pSrcResource); } \
	virtual void STDMETHODCALLTYPE UpdateSubresource(ID3D10Resource *pDstResource,UINT DstSubresource,const D3D10_BOX *pDstBox,const void *pSrcData,UINT SrcRowPitch,UINT SrcDepthPitch) { member_.UpdateSubresource(pDstResource, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch); } \
	virtual void STDMETHODCALLTYPE ClearRenderTargetView(ID3D10RenderTargetView *pRenderTargetView,const FLOAT ColorRGBA[ 4 ]) { member_.ClearRenderTargetView(pRenderTargetView, ColorRGBA); } \
	virtual void STDMETHODCALLTYPE ClearDepthStencilView(ID3D10DepthStencilView *pDepthStencilView,UINT ClearFlags,FLOAT Depth,UINT8 Stencil) { member_.ClearDepthStencilView(pDepthStencilView, ClearFlags, Depth, Stencil); } \
	virtual void STDMETHODCALLTYPE GenerateMips(ID3D10ShaderResourceView *pShaderResourceView) { member_.GenerateMips(pShaderResourceView); } \
	virtual void STDMETHODCALLTYPE ResolveSubresource(ID3D10Resource *pDstResource,UINT DstSubresource,ID3D10Resource *pSrcResource,UINT SrcSubresource,DXGI_FORMAT Format) { member_.ResolveSubresource(pDstResource, DstSubresource, pSrcResource, SrcSubresource, Format); } \
	virtual void STDMETHODCALLTYPE VSGetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppConstantBuffers) { member_.VSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); } \
	virtual void STDMETHODCALLTYPE PSGetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView **ppShaderResourceViews) { member_.PSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); } \
	virtual void STDMETHODCALLTYPE PSGetShader(ID3D10PixelShader **ppPixelShader) { member_.PSGetShader(ppPixelShader); } \
	virtual void STDMETHODCALLTYPE PSGetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState **ppSamplers) { member_.PSGetSamplers(StartSlot, NumSamplers, ppSamplers); } \
	virtual void STDMETHODCALLTYPE VSGetShader(ID3D10VertexShader **ppVertexShader) { member_.VSGetShader(ppVertexShader); } \
	virtual void STDMETHODCALLTYPE PSGetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppConstantBuffers) { member_.PSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); } \
	virtual void STDMETHODCALLTYPE IAGetInputLayout(ID3D10InputLayout **ppInputLayout) { member_.IAGetInputLayout(ppInputLayout); } \
	virtual void STDMETHODCALLTYPE IAGetVertexBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppVertexBuffers,UINT *pStrides,UINT *pOffsets) { member_.IAGetVertexBuffers(StartSlot, NumBuffers, ppVertexBuffers, pStrides, pOffsets); } \
	virtual void STDMETHODCALLTYPE IAGetIndexBuffer(ID3D10Buffer **pIndexBuffer,DXGI_FORMAT *Format,UINT *Offset) { member_.IAGetIndexBuffer(pIndexBuffer, Format, Offset); } \
	virtual void STDMETHODCALLTYPE GSGetConstantBuffers(UINT StartSlot,UINT NumBuffers,ID3D10Buffer **ppConstantBuffers) { member_.GSGetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers); } \
	virtual void STDMETHODCALLTYPE GSGetShader(ID3D10GeometryShader **ppGeometryShader) { member_.GSGetShader(ppGeometryShader); } \
	virtual void STDMETHODCALLTYPE IAGetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY *pTopology) { member_.IAGetPrimitiveTopology(pTopology); } \
	virtual void STDMETHODCALLTYPE VSGetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView **ppShaderResourceViews) { member_.VSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); } \
	virtual void STDMETHODCALLTYPE VSGetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState **ppSamplers) { member_.VSGetSamplers(StartSlot, NumSamplers, ppSamplers); } \
	virtual void STDMETHODCALLTYPE GetPredication(ID3D10Predicate **ppPredicate,BOOL *pPredicateValue) { member_.GetPredication(ppPredicate, pPredicateValue); } \
	virtual void STDMETHODCALLTYPE GSGetShaderResources(UINT StartSlot,UINT NumViews,ID3D10ShaderResourceView **ppShaderResourceViews) { member_.GSGetShaderResources(StartSlot, NumViews, ppShaderResourceViews); } \
	virtual void STDMETHODCALLTYPE GSGetSamplers(UINT StartSlot,UINT NumSamplers,ID3D10SamplerState **ppSamplers) { member_.GSGetSamplers(StartSlot, NumSamplers, ppSamplers); } \
	virtual void STDMETHODCALLTYPE OMGetRenderTargets(UINT NumViews,ID3D10RenderTargetView **ppRenderTargetViews,ID3D10DepthStencilView **ppDepthStencilView) { member_.OMGetRenderTargets(NumViews, ppRenderTargetViews, ppDepthStencilView); } \
	virtual void STDMETHODCALLTYPE OMGetBlendState(ID3D10BlendState **ppBlendState,FLOAT BlendFactor[ 4 ],UINT *pSampleMask) { member_.OMGetBlendState(ppBlendState, BlendFactor, pSampleMask); } \
	virtual void STDMETHODCALLTYPE OMGetDepthStencilState(ID3D10DepthStencilState **ppDepthStencilState,UINT *pStencilRef) { member_.OMGetDepthStencilState(ppDepthStencilState, pStencilRef); } \
	virtual void STDMETHODCALLTYPE SOGetTargets(UINT NumBuffers,ID3D10Buffer **ppSOTargets,UINT *pOffsets) { member_.SOGetTargets(NumBuffers, ppSOTargets, pOffsets); } \
	virtual void STDMETHODCALLTYPE RSGetState(ID3D10RasterizerState **ppRasterizerState) { member_.RSGetState(ppRasterizerState); } \
	virtual void STDMETHODCALLTYPE RSGetViewports(UINT *NumViewports,D3D10_VIEWPORT *pViewports) { member_.RSGetViewports(NumViewports, pViewports); } \
	virtual void STDMETHODCALLTYPE RSGetScissorRects(UINT *NumRects,D3D10_RECT *pRects) { member_.RSGetScissorRects(NumRects, pRects); } \
	virtual void STDMETHODCALLTYPE ClearState( void) { member_.ClearState(); } \
	virtual void STDMETHODCALLTYPE Flush( void) { member_.Flush(); } \
	virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(const void *pShaderBytecode,SIZE_T BytecodeLength,const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,UINT NumEntries,UINT OutputStreamStride,ID3D10GeometryShader **ppGeometryShader) { return member_.CreateGeometryShaderWithStreamOutput(pShaderBytecode, BytecodeLength, pSODeclaration, NumEntries, OutputStreamStride, ppGeometryShader); } \
	virtual void STDMETHODCALLTYPE SetTextFilterSize(UINT Width,UINT Height) { member_.SetTextFilterSize(Width, Height); } \
	virtual void STDMETHODCALLTYPE GetTextFilterSize(UINT *pWidth,UINT *pHeight) { member_.GetTextFilterSize(pWidth, pHeight); }

#endif
